/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controleur;

import Entites.Elfe;
import Entites.Espece;
import Entites.Magicien;
import Entites.Troll;

/**
 *
 * @author Raphaël
 */
public class Interaction {

    private Espece lEspeceUn;
    private Espece lEspeceDeux;
    private Espece nouveauNe;
    private Espece vainqueur;
    private Espece perdant;
    private ActionType action;

    public static enum ActionType {

        Combat, Accouplement
    };

    public Interaction(Espece un, Espece deux) {
        lEspeceUn = un;
        lEspeceDeux = deux;
    }

    public Espece getNouveauNe() {
        return nouveauNe;
    }

    public Espece getPerdant() {
        return perdant;
    }

    public Espece getVainqueur() {
        return vainqueur;
    }

    public void action() {
        comparerType(lEspeceUn, lEspeceDeux);
    }

    private void comparerType(Espece un, Espece deux) {
        if (un.toString().equals(deux.toString())) {
            accouplement(un, deux);
        } else {
            combat(un, deux);
        }
    }

    public void accouplement(Espece un, Espece deux) {
        Espece nouveauNe;
        if (un.toString().equals(Troll.getType())) {
            nouveauNe = new Troll();
        } else if (un.toString().equals(Magicien.getType())) {
            nouveauNe = new Magicien();
        } else {
            nouveauNe = new Elfe();
        }
        action = ActionType.Accouplement;
        this.nouveauNe = nouveauNe;
    }

    public void combat(Espece un, Espece deux) {
        if (un.getUnCorps().getForce() > deux.getUnCorps().getForce()) {
            vainqueur = un;
            perdant = deux;
        } else {
            vainqueur = deux;
            perdant = un;
        }
        action = ActionType.Combat;
    }

    public ActionType getAction() {
        return action;
    }
}
